﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Net.Mail;
using System.IO;
using System.Text.RegularExpressions;

namespace DentistOffice
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        Regex regex = new Regex("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
       
        protected void Page_Load(object sender, EventArgs e)
        {


            /*loginPanel.Controls.Add(new LiteralControl("<form method ='post' action='~/Site.Master'>"));
            loginPanel.Controls.Add(new LiteralControl("<input name='login' id='login' onclick='if(this.value=='login') this.value='';' onfocus='this.select()' onblur='this.value=!this.value?'login':this.value;' type='text' value='login' onclick='return login_onclick()' /><br />"));
            loginPanel.Controls.Add(new LiteralControl("<input name ='haslo' id='haslo' onclick='if(this.value=='haslo') this.value='';' onfocus='this.select()' onblur='this.value=!this.value?'haslo':this.value;' type='password' value='haslo' /><br />"));
            loginPanel.Controls.Add(new LiteralControl("</form>"));*/
        }
        protected int probujExcl()
        {
            int stat;
            try
            {
                FileStream fs = new FileStream(System.AppDomain.CurrentDomain.BaseDirectory + "\\krzyk.txt", FileMode.Append, FileAccess.Write, FileShare.Read);
                fs.Close();
                stat = 0;
            }
            catch (Exception)
            {
                System.Threading.Thread.Sleep(5000);
                stat = 1;
            }
            return stat;
        }
        protected void NavigationMenu_MenuItemClick(object sender, MenuEventArgs e)
        {

        }
        protected void logIn_Click(object sender, EventArgs e)
        {
            using (DentistEntities dE = new DentistEntities())
            {
                string login = Request.Form["login"];

                string pass = Crypt.GetMD5Hash(Request.Form["haslo"]);

                var query = dE.Patients.First(qr => qr.login == login);
                //Label2.Text = Request.Form["haslo"];
                if (query != null)
                {
                    if (query.password == pass)
                    {
                        Session["isLogged"] = query.id.ToString();
                    }
                    else
                    {
                        Label1.Text = "Złe haslo";
                    }
                }
                else
                {
                    Label1.Text = "Użytkownik nie istnieje";
                }
            }
        }

        protected void logOut_Click(object sender, EventArgs e)
        {
            Session.Clear();
        }
        protected string Losowy(int rozmiar)
        {
            StringBuilder b = new StringBuilder();
            Random r = new Random();
            char ch;
            for (int i = 0; i < rozmiar; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * r.NextDouble() + 65)));
                b.Append(ch);
            }
            return b.ToString().ToLower();
        }
        protected void zapisz(object sender, EventArgs e)
        {
            if (smail.Text == "Twój e-mail" || smail.Text == "")
            {
                danep.Visible = true;
                dane.Text = "Wpisz swój e-mail!";
            }
            else if(!regex.IsMatch(smail.Text))
            {
                danep.Visible = true;
                dane.Text = "Wpisz poprawny e-mail!";
            }
            else
            {
                try
                {
                    DentistEntities DE = new DentistEntities();
                    var query = from p in DE.Subscriptions where p.email == smail.Text select p;
                    if (query.Count() != 0)
                    {
                        danep.Visible = true;
                        dane.Text = "Podany e-mail jest już w bazie";
                    }
                    else
                    {
                        MailMessage email = new MailMessage();
                        MailAddress fromEmail = new MailAddress("miasi@o2.pl");
                        email.From = fromEmail;
                        email.To.Add(smail.Text);
                        email.Subject = "Potwierdź aktywację subskrypcji na stronie dentysci.dl.pl.";
                        email.IsBodyHtml = true;
                        String l = Losowy(12);
                        email.Body = "Aby potwierdzić aktywację kliknij w poniższy link:<br><a href='http://" + Request.ServerVariables["HTTP_HOST"] + "/Subskrypcja.aspx?a=1&email=" + smail.Text + "&klucz=" + l + "'>http://" + Request.ServerVariables["HTTP_HOST"] + "/Subskrypcja.aspx?a=1&email=" + smail.Text + "&klucz=" + l + "</a>";
                        SmtpClient client = new SmtpClient("poczta.o2.pl", 587);
                        System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("miasi", "kopytko");
                        client.UseDefaultCredentials = false;
                        client.Credentials = SMTPUserInfo;
                        client.Send(email);
                        DentistEntities dE = new DentistEntities();
                        Subscription s = new Subscription();
                        s.email = l;
                        dE.AddToSubscriptions(s);
                        dE.SaveChanges();
                        danep.Visible = true;
                        dane.Text = "Sprawdź e-mail w celu potwierdzenia aktywacji subskrypcji";
                        smail.Text = "Twój e-mail";
                    }
                }
                catch (Exception ex)
                {
                    danep.Visible = true;
                    dane.Text = "Wystąpił następujący błąd" + ex.Message;
                }
            }
        }
        protected void wypisz(object sender, EventArgs e)
        {
            if (smail.Text == "Twój e-mail" || smail.Text == "")
            {
                danep.Visible = true;
                dane.Text = "Wpisz swój e-mail!";
            }
            else if (!regex.IsMatch(smail.Text))
            {
                danep.Visible = true;
                dane.Text = "Wpisz poprawny e-mail!";
            }
            else
            {
                try
                {
                    DentistEntities DE = new DentistEntities();
                    var query = from p in DE.Subscriptions where p.email == smail.Text select p;
                    if (query.Count() == 0)
                    {
                        danep.Visible = true;
                        dane.Text = "Podany e-maila nie ma w bazie";
                    }
                    else
                    {
                        var id = query.FirstOrDefault();
                        MailMessage email = new MailMessage();
                        MailAddress fromEmail = new MailAddress("miasi@o2.pl");
                        email.From = fromEmail;
                        email.To.Add(smail.Text);
                        email.Subject = "Potwierdź deaktywację subskrypcji na stronie dentysci.dl.pl.";
                        email.IsBodyHtml = true;
                        email.Body = "Aby potwierdzić deaktywację kliknij w poniższy link:<br><a href='http://" + Request.ServerVariables["HTTP_HOST"] + "/Subskrypcja.aspx?a=2&email=" + smail.Text + "&klucz=" + id.id + "'>http://" + Request.ServerVariables["HTTP_HOST"] + "/Subskrypcja.aspx?a=2&email=" + smail.Text + "&klucz=" + id.id + "</a>";
                        SmtpClient client = new SmtpClient("poczta.o2.pl", 587);
                        System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("miasi", "kopytko");
                        client.UseDefaultCredentials = false;
                        client.Credentials = SMTPUserInfo;
                        client.Send(email);
                        danep.Visible = true;
                        dane.Text = "Sprawdź e-mail w celu potwierdzenia deaktywacji subskrypcji";
                        smail.Text = "Twój e-mail";
                    }
                }
                catch (Exception ex)
                {
                    danep.Visible = true;
                    dane.Text = "Wystąpił następujący błąd" + ex.Message;
                }
            }
        }
        protected void register_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Rejestracja.aspx");
        }
        protected void smail_Click(object sender, EventArgs e)
        {
            smail.Text = "";
        }
        protected void krzyk(object sender, EventArgs e)
        {
            string cook = "";
            try
            {
                cook = Request.Cookies["krzyk"]["krzyczal"];
            }
            catch (Exception){}
            if (nick.Text == "Twój nick" || nick.Text == "")
            {
                danep.Visible = true;
                dane.Text = "Wpisz nick";
            }
            else if (kkrzyk.Text == "Krzyk" || kkrzyk.Text == "")
            {
                danep.Visible = true;
                dane.Text = "Wpisz krzyk";
            }
            else if (cook == "tak")
            {
                danep.Visible = true;
                dane.Text = "Możesz krzyknąć raz na 5 minut";
            }
            else
            {
                int stat = 1;
                while (stat == 1)
                    stat = probujExcl();
                StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + "krzyk.txt", true);
                string krzyk = kkrzyk.Text;
                krzyk = krzyk.Replace(":-)", "<img src=\"Styles/us.gif\" />");
                krzyk = krzyk.Replace(":)", "<img src=\"Styles/us.gif\" />");
                krzyk = krzyk.Replace(":-(", "<img src=\"Styles/sm.gif\" />");
                krzyk = krzyk.Replace(":(", "<img src=\"Styles/sm.gif\" />");
                krzyk = krzyk.Replace(":-|", "<img src=\"Styles/ne.gif\" />");
                krzyk = krzyk.Replace(":|", "<img src=\"Styles/ne.gif\" />");
                krzyk = krzyk.Replace(":-/", "<img src=\"Styles/dz.gif\" />");
                krzyk = krzyk.Replace(":/", "<img src=\"Styles/dz.gif\" />");
                krzyk = krzyk.Replace(":-D", "<img src=\"Styles/du.gif\" />");
                krzyk = krzyk.Replace(":D", "<img src=\"Styles/du.gif\" />");
                string NextLine = "<b>" + nick.Text + "</b> <i>(" + DateTime.Now + ")</i>: " + krzyk + "<br />";
                sw.WriteLine(NextLine);
                sw.Close();
                Response.Cookies["krzyk"]["krzyczal"] = "tak";
                Response.Cookies["krzyk"].Expires = DateTime.Now.AddMinutes(5);
                nick.Text = "Twój nick";
                kkrzyk.Text = "Krzyk";
            }
        }

        protected void logOut(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Session.Clear();
        }
    }
}
